######################################################
#WA General 2018 and 2014 main figure in paper.
# When Women Run, Voters Will Follow (Sometimes): 
##Examining the Mobilizing Effect of Female Candidates in the 2014 and 2018 Midterm Elections 
#By Safarpour, Wyckoff Gaynor, Rouse, and Swers #
######################################################

#clean the environment.
rm(list=ls()) 

#Packages.
library(ggplot2)
library(cowplot) 

#Setwd.
setwd("/Users/ACS/Dropbox/When Women Run/Revision_PoliticalBehavior/R&R Part 2/Publication Docs/Replication Data and Code/")

#Data.
WA<- read.csv("WA2018GeneralCompetitivenessControl.csv", header=TRUE)
WA$Model<-c("Controlling for\n Competitiveness")

WAgeneral<- read.csv("WA2014GeneralCompetitivenessControl.csv", header=TRUE)
WAgeneral$Model<-c("Controlling for\n Competitiveness")

#bind data together.
WAsum<-rbind(WA,WAgeneral)
WAsum$Registrant.Subgroup<-factor(c(1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8), levels=c(1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8),
                                  labels=c("Overall", "Women", "Men", "Gen. Z", "Millennials", "Gen. X", "Baby\nBoomers", "Silent Gen.",
                                           "Overall", "Women", "Men", "Gen. Z", "Millennials", "Gen. X", "Baby\nBoomers", "Silent Gen."), ordered = T)


#Figure.
pdf("WA20182014CompetitivenessMainModels.pdf", width=9, height=5)
MP<-ggplot(d=WAsum, aes(Registrant.Subgroup, Effect*100, shape=Election, color=Election))+
  geom_point(position = "dodge",
             stat = "identity")+
  geom_errorbar(aes(ymin=`UpperCI`*100, ymax=`LowerCI`*100),  width=0.5)+
  geom_hline(yintercept=0, linetype="dashed", color="gray28")+
  labs(y="Percentage Point Difference in Predicted Probability of Voting", x="Registrant Subgroup")+
  theme_bw()+theme(axis.text=element_text(size=8.5), axis.title=element_text(size=10))
ggdraw(add_sub(MP, x=0,hjust=0,
               "Notes: Estimates calculated using separate models for each election. Error bars are 95% confidence intervals calculated using simulation \nholding covariates at their observed values. Gen. Z was not eligible to vote in the 2014 general election.", #add note.
               fontface = "italic", colour = "black", size=9)) #x=0.2 shifts it so its left justified.
dev.off()